package com.he.DesignPatterns.template;

/**
 * @description: 抽象类
 * @Author: HCL
 * @Date: 2024/8/28 15:17
 */
public abstract class AbstractClass {

    //模板方法定义    执行顺序
    public final void cookProcess(){
        if (isExecute()){
            heatPot();
        }
        pourOil();
        heatOil();
        pourVegetable();
        pourSauce();
        fry();
    }

    //可选步骤
    public void heatPot(){
        System.out.println("热锅");
    }

    //钩子方法,默认不执行
    public boolean isExecute(){
        return false;
    }

    //第一步骤
    public void pourOil(){
        System.out.println("倒油");
    }

    //第二步骤
    public void heatOil(){
        System.out.println("热油");
    }

    //第三步骤  蔬菜种类不确定
    public abstract void pourVegetable();

    //第四步骤  调料种类不确定
    public abstract void pourSauce();

    public void fry(){
        System.out.println("翻炒，翻炒，熟了");
    }
}
